#include <iostream>
#include <vector>
using namespace std;

// 通过前缀预处理保存区间内关键信息，使每次查询能在 O(1) 时间内完成判断
int main() {
    int t;  // 测试用例数量
    cin >> t;

    while (t--) {
        int n;  // 数组长度
        cin >> n;

        vector<int> arr(n + 1);     // 存储输入数组（1-based）
        vector<int> lastDiff(n + 1); // lastDiff[i] 表示在下标 i 之前最近一次出现相邻不相等元素的左端下标

        int prev = -1;  // 记录上一个元素的值（初始为无效值）
        for (int i = 1; i <= n; i++) {
            int curr;
            cin >> curr;
            arr[i] = curr;

            // 若当前元素与前一个不同，说明在 i-1 处出现了相邻不等对
            if (curr != prev) {
                lastDiff[i] = i - 1;
            } else {
                // 否则继承上一个位置的记录
                lastDiff[i] = lastDiff[i - 1];
            }

            prev = curr;
        }

        int q;  // 查询数量
        cin >> q;
        while (q--) {
            int left, right;
            cin >> left >> right;

            // 若在 right 之前存在一个相邻不等对且其左端 >= left，说明区间 [left, right] 内有不等元素
            // lastDiff[right] 表示在 x=lastDiff[right], (x, right]之间的数全相同
            if (lastDiff[right] >= left) {
                cout << lastDiff[right] << " " << right << "\n";
                // cout << left + 1 << " " << right << "\n"; 不能这样改
            } else {
                cout << "-1 -1\n";
            }
        }
    }

    return 0;
}
